﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Quaack.Data;
using Quaack.Web.Controls;

namespace Quaack.Web
{
    public partial class GebruikerHome : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Provider.CurrentUserPage == null)
                return;

            var messages = Provider.CurrentUserPage.Berichten;

            if (messages == null)
                return;

            // Berichten aan de table toevoegen
            foreach (var message in messages)
            {
                MessageTable.Rows.Add(AddMessageTable(message));
            }


            if (Provider.IsHomePage)
            {
                foreach (var reageerder in Provider.CurrentUser.Reageerders)
                {
                    if(reageerder.Id == Provider.CurrentUser.Id)
                        continue;

                    UserTable.Rows.Add(AddReationUsers(reageerder));
                }
            }

        }

        TableRow AddReationUsers(Profiel user)
        {
            var rowToAdd = new TableRow();
            var cellToAdd = new TableCell();

            var berichtHolder = (CombinedContentHolder)Page.LoadControl("~/Controls/CombinedContentHolder.ascx");
            berichtHolder.Profiel = user;
            berichtHolder.ShowContent = false;

            cellToAdd.Controls.Add(berichtHolder);
            rowToAdd.Cells.Add(cellToAdd);

            return rowToAdd;
        }



        // Recursieve functie die de reacties op berichten ook toevoegd
        // Door gebruik te maken van padding op de messagetable klopt de 
        // het inspringen van de reacties
        TableRow AddMessageTable(Bericht bericht)
        {
            var tableToAdd = new Table();

            tableToAdd.CssClass = "messagetable";

            var rowToAdd = new TableRow();
            var cellToAdd = new TableCell();

            var berichtHolder = (CombinedContentHolder)Page.LoadControl("~/Controls/CombinedContentHolder.ascx");
            berichtHolder.Bericht = bericht;

            cellToAdd.Controls.Add(berichtHolder);
            rowToAdd.Cells.Add(cellToAdd);
            tableToAdd.Rows.Add(rowToAdd);

            foreach (var reactie in bericht.Reacties)
            {
                tableToAdd.Rows.Add(AddMessageTable(reactie));
            }

            var tr = new TableRow();
            var tc = new TableCell();

            tc.Controls.Add(tableToAdd);
            tr.Cells.Add(tc);

            return tr;
        }
    }
}